Skip to content

Exploit vulnerabilities and vulnerability prevention implementation

Notifications You must be signed in to change notification settings

TrG-1999/DetectPacket-CVE-2017-8464

Repository files navigation

Xây dựng ứng dụng phát hiện lỗ hổng CVE-2017-8464

NỘI DUNG:

PHẦN 1: TỔNG QUAN VỀ CVE-2017-8464

  1. KHÁI NIỆM VỀ FILE LNK
  2. TẠO HỆ THỐNG MẮC LỖI CVE-2017-8464
  3. CÔNG CỤ TẤN CÔNG LỖ HỔNG CVE-2017-8464

PHẦN 2: SỬ DỤNG CÔNG CỤ METASPLOIT KHAI THÁC CVE-2017-8464

2.1. MÔ HÌNH KHAI THÁC CVE-2017-8464

2.2. THỰC HIỆN KHAI THÁC CVE-2017-8464

PHẦN 3: XÂY DỰNG CÔNG CỤ PHÁT HIỆN CVE-2017-8464 DỰA TRÊN NGÔN NGỮ PYTHON

3.1. PHÂN TÍCH SIGNATURE CỦA CVE-2017-8464 DỰA TRÊN GÓI MẠNG BẮT ĐƯỢC

3.2. HÀM XỬ LÝ PHÁT HIỆN KHAI THÁC CVE-2017-8464 DỰA TRÊN PHÂN TÍCH SIGNATURE CỦA GÓI MẠNG

KẾT LUẬN

**

PHẦN 1: TỔNG QUAN VỀ CVE-2017-8464

  1. KHÁI NIỆM VỀ FILE LNK

LNK là System Files - Windows Shortcut, dưới định dạng Binary được phát triển bởi Microsoft.

Hình 1: Icon Shortcut trên windows

Một tập tin LNK là một phím tắt hoặc "liên kết" được sử dụng bởi Windows như là một tham chiếu đến một gốc tập tin, thư mục, hoặc ứng dụng tương tự như một bí danh trên nền tảng Macintosh. Nó chứa các shortcut loại mục tiêu, vị trí và tên tập tin cũng như các chương trình mở các tập tin mục tiêu và một phím tắt tùy chọn. Các tập tin có thể được tạo ra trong Windows bằng cách kích chuột phải vào một tập tin, thư mục, hoặc chương trình thực thi và sau đó chọn Create shortcut.

Lợi dụng lỗ hổng này tồn tại trong Microsoft Windows cho phép kẻ tấn công thực hiện code từ xa nếu biểu tượng của một phím tắt hay shortcut (được tạo ra một cách đặc biệt).

Hình 2: Tạo thủ công shortcut thực thi tải và chạy mã tấn công qua tệp .LNK

Thành phần dễ bị tấn công được liên kết với network stack. Một lỗ hổng như vậy thường được gọi là “remotely exploitable” và có thể được coi là một cuộc tấn công có thể khai thác được ở protocol level hoặc nhiều network hops (ví dụ: qua một hoặc nhiều bộ định tuyến).

  1. TẠO HỆ THỐNG MẮC LỖI CVE-2017-8464

Các hệ thống bị ảnh hưởng bới lỗ hổng CVE-2017-8464 là Windows Shell trong Microsoft Windows Server 2008 SP2 và R2 SP1, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2012 Gold và R2, Windows RT 8.1, Windows 10 Gold, 1511, 1607, 1703 và Windows Server 2016 cho phép người dùng cục bộ hoặc những kẻ tấn công từ xa thực thi mã tùy ý thông qua tệp .LNK được tạo thủ công, không được xử lý đúng cách trong khi hiển thị biểu tượng trong Windows Explorer hoặc bất kỳ ứng dụng nào khác phân tích cú pháp biểu tượng của lối tắt. Hay còn gọi là "LNK Remote Code Execution Vulnerability."

Bản cập nhật bảo mật vá lỗ hổng bằng cách sửa chữa xác nhận đúng tham chiếu của biểu tượng shortcut, Microsoft Windows đã có bản cập nhật cho lỗ hổng này vào tháng 6 năm 2017. Lỗ hổng này không ảnh hưởng đến phiên bản Windows XP và Windows cũ hơn.

  1. CÔNG CỤ TẤN CÔNG LỖ HỔNG CVE-2017-8464

Metasploit

Metasploit Framework là một môi trường dùng để kiểm tra, tấn công và khai thác lỗi của các service sử dụng trên giao diện dòng lệnh, công cụ này có sẵn trên kali linux phiên bản VMware.

Hình 3: Tool Metasploit

Armitage

Công cụ bằng giao diện dựa trên dự án của Metasploit.

Hình 4: Tool Armitage.

PHẦN 2: SỬ DỤNG CÔNG CỤ METASPLOIT KHAI THÁC CVE-2017-8464

2.1. MÔ HÌNH KHAI THÁC CVE-2017-8464

Máy nạn nhân – Windows 7 Pro

Hình 5: Phiên bản hệ điều hành của nạn nhân

Hình 6:Địa chỉ IP của máy nạn nhân

Máy tấn công – Kali linux – Sử dụng công cụ Metasploit.

Hình 7:Địa chỉ IP máy kẻ tấn công

Lớp mạng hoạt động là VMnet8 Subnet 192.168.169.0

2.2. THỰC HIỆN KHAI THÁC CVE-2017-8464

  • Tạo payloads reverse_tcp và lắng nghe kết nối TCP đến mấy Kali.
  • Với LHOST là địa chỉ lắng nghe từ máy attackers.

Hình 8: Tạo payloads và lắng nghe kết nối TCP đến máy attacker

  • Tạo file shortcut chứa lỗi CVE-2017-8464 để tự động khởi chạy payloads reverse_tcp được chèn vào.

Hình 9: Tạo file .lnk tự động chạy mã độc

Hình 10:Thông tin thiết lập Payloads

  • Khởi chạy lênh exploit để khởi tạo các shortcut chứa lỗi trỏ tới file payload.
  • Cụ thể như trong thông tin mô tả trên sẽ có file payload là FlashPlayerCPApp.cpl và file shortcut chứa lỗ hổng tự động chạy file payload.
  • Sau khi khởi tạo hết các file cần thiết này nó sẽ lưu ra folder /root/.msf4/local/ trên máy kẻ tấn công rồi kẻ tấn công sẽ copy toàn bộ các file trong thư mục đó ra 1 USB bất kì.

Hình 11:Khơi tạo File .lnk và kèm theo mã độc

Hình 12: Copy toàn bộ mã độc ra USB

  • Sau khi dụ dỗ nạn nhân cắm vào USB vào máy tính của họ. Nạn nhân không cần click bất cứ vào ứng dụng gì trong USB nhưng lỗi từ file .lnk (shortcut file) đã tự động khởi payload mã độc để thực hiện lỗ hổng chạy code thực thi từ xa.

Hình 13: Nạn nhân cắm USB chứa file .lnk lỗi chứa mã độc

  • Quan sát lại trên máy attackers thì ta thấy máy nạn nhân đã kết nối đến máy kẻ tấn công lúc này kẻ tấn công đã khai thác thành công dựa trên CVE-2017-8464 và thực thi được mã độc từ xa đến máy nạn nhân.

Hình 14: Attackers đã khai thác thành công và xâm nhập vào được máy nạn nhân

**

PHẦN 3: XÂY DỰNG CÔNG CỤ PHÁT HIỆN CVE-2017-8464 DỰA TRÊN NGÔN NGỮ PYTHON

3.1. PHÂN TÍCH SIGNATURE CỦA CVE-2017-8464 DỰA TRÊN GÓI MẠNG BẮT ĐƯỢC

  • Khi thực hiện tấn công có bắt gói ta thấy răng khi file .lnk tự động chạy thì máy nạn nhân gọi kết nối TCP đến địa chỉ máy kẻ tấn công đã thiết lập trong payloads.

Hình 15:Gói tin tấn công trên lỗ hổng CVE-2017-8464 được bắt lại

  • Gói tin với cờ PSH cho phép gửi thẳng tới máy nạn nhân thay thì đưa vào bộ nhớ tạm.

Hình 16:Gói tin với cờ PSH sau khi kết nối TCP thành công đến attackers

  • Tiếp theo gói tin với dấu hiệu đáng nghi “MZ” cho thấy đây có lẽ là 1 PE file mã độc để đưa về máy nạn nhân

Hình 17: Dấu hiêu đáng nghi trong gói tin bắt được mà attacker gửi cho victim.

PE File Format (Portable Executable File Format): là định dạng file riêng của Win32. Tất cả các file có thể thực thi được trên Win32 như: *.EXE, *.DLL (32 bit),*.COM,*.NET, *.CPL,… đều là định dạng PE; ngoại trừ các tập tin VxDs và *.DLL (16 bit).

PE_File_Struct.png

Hình 18: Cấu trúc của PE file.

DOS MZ Header

Tất cả các PE file đếu bắt đầu bằng một DOS MZ Header đơn giản. Nó chiếm 64 bytes đầu tiên. Vùng này được dùng  trong trường hợp chương trình chạy trên nền DOS

e_magic: Chữ ký của PE file, giá trị: 4Dh, 5Ah (Ký tự “MZ”, tên của người sáng lập MS-DOS: Mark Zbikowsky). Giá trị này đánh dấu một DOS Header hợp lệ và được phép thực thi tiếp.

Hình 19: Chứ ký PE file trong gói tin bắt được

e_lfanew: là một DWORD nằm ở cuối cùng của DOS Header, là trường chứa offset của PE Header so với vị trí đầu file.

DOS STUB

DOS Stub chỉ là một chương trình DOS EXE nhỏ hiển thị một thông báo lỗi, là phần để tương thích với Windows 16bit. 

Hình 20: Thông tin trong gói DOS STUB bắt được từ attackers gửi cho victim

PE Header

PE Header thực chất là cấu trúc IMAGE_NT_HEADERS bao gồm các thông tin cần thiết cho quá trình loader load file lên bộ nhớ.

Signature: là 1 DWORD bắt đầu PE Header chứa chữ ký PE: 50h, 45h, 00h, 00

Hình 21: Thông tin từ e_lfanew chỉ ra phần Signature của PE header.

SECTION TABLE

Section Table là thành phần ngày sau PE Header, bao gồm một mảng những cấu trúc IMAGE_SECTION_HEADER

Hình 22: Phần nội dung của Section table trong gói tin bắt được

  • Những gói tin tiếp theo sẽ là những phần dữ liệu của SECTION của PE file.
  • Từ đó ta chỉ lấy phần HEADER trong cấu trúc của PE file mã độc này đem băm trên hàm MD5 để làm signature phát hiện ra mã độc của file này, cụ thể ta sẽ lấy 1024 bytes dữ liệu trong gói tin mà ta phát hiện, nó có bao gồm phần HEADER. Và những thông tin liên quan ta biết đễn mã độc sẽ được lưu trong file CSV để làm tập dữ liệu phát hiện các mã độc.

Hình 23: Lưu signature và thông tin liên quan đén mã độc trong file CSV

3.2. HÀM XỬ LÝ PHÁT HIỆN KHAI THÁC CVE-2017-8464 DỰA TRÊN PHÂN TÍCH SIGNATURE CỦA GÓI MẠNG

  • Hàm sẽ lấy thông tin của các protocal liên quan trong frame_info, nếu có trường data thì nó sẽ lấy tiếp protocal gần trường data.

Hình 24: Hàm lấy thông tin Protocal của gói tin

  • Get_info sẽ lấy những thông tin quan trọng khá giống với trường info trong wireshark.

Hình 25: Hàm lấy thông tin trường info của gói tin

  • Với hàm convert từ file pcap sang csv thì đầu tiên nó sẽ sử dụng pyshark đẻ loads file tạm bắt gói được (temp.pcap). Sau đó lấy những thông tin khá giống trường thông tin trong wireshark để ghi ra file tạm CSV. Trong hàm này nó chỉ lấy những gói tin có từ layer IP&IPV6 trở lên.
  • Sau khi chuyển đổi ra CSV file tạm nó sẽ tạo 1 bản sao copy đến thư mục packet nếu cần làm tư liệu về sau.

Hình 26: Hàm chuyển đổi gói tin từ Pcap sang file CSV

  • Đầu tiên hàm detectRemoteCode sẽ thấy nhưng thông tin trong file mẫu chứa signature (md5) đã thu tập và phân tích từ trước, các signature sẽ được lưu tổng hợp ở file mẫu này. Sau đó mở file CSV lưu dữ liệu tạm đã bắt được từ lưu lượng mạng rồi lấy dữ liệu data trong protocal TCP gồm 1024 bytes tương đương với 2048 kí tự hex đem đi decode rồi kiểm tra nếu bắt đầu bằng kí tự “MZ” thì hash nó đem so sánh với signature mà ta đã thẩm định. Nếu đúng thì nó sẽ cảnh báo và ghi log lại việc này giống với phân tích tĩnh (Static Analysis) như các công cụ Antivirus thường làm.

Hình 27: Hàm kiểm tra mã độc trên lưu lượng mạng

  • Sau khi có các hàm chính tiếp theo là đoạn code chạy giám sát lưu lượng từ dòng 88 đến 109 là cuối chương trình.
  • Dòng đầu kiểm tra thư mục nếu chưa có thì tạo.
  • Tiếp theo là vòng lập vô tận cho đến khi người dùng Interrupt chương trình bằng tổ hợp phím Ctr+C.
  • Trong vòng lập đầu tiền sẽ là dòng sử dụng pyshark để bắt các gói tin, với interface là card mạng mà ta muốn thu thập lắng nghe và file output sẽ là temp.pcap.
  • Nó sẽ bắt gói trong 6 giây rồi sau đó chạy hàm chuyển đổi từ pcap sang CSV.
  • Sau khi đã có file CSV nó sẽ chạy hàm kiểm tra lỗ hổng CVE-2017-8464. Nó cứ thực hiện các thao tác đó đều đặn cho đến khi người dùng ngặt chương trình.

Hình 28: Vòng lập chạy bắt lưu lượng và kiểm tra mã độc

*Tiến hành kiểm tra hoạt động của chương trình qua thực hiện khai thác.

  • Chạy chương trình giám sát trên máy windows 10 (máy thật) giám sát trên vùng mạng mà ta sẽ thực hiện lại tấn công như phần 2 ở trên.

Hình 29: Khởi chạy chương trình giám sát trên máy thật

  • Quay lại 2 máy ảo và thực hiện lại các thao tác tấn công như phần 2. Ta thấy rằng lưu lượng mạng mà nó bắt được đã phân tích và phát hiện ra được kẻ tấn công đang thực hiện LNK Remote code được thông báo như hình bên dưới.
  • Sau cùng muốn kết thúc quá trình dò quét trên cổng mạng chỉ cần bấm tổ hợp phím Ctr+C là ngặt chương trình chạy.

Hình 30: Phát hiện và cảnh báo khi lắng nghe lưu lượng mạng

  • Sau khi quét ra mỗi đe dọa trong folder của chương trình giám sát ta sẽ thấy sinh ra folder packet nơi chưa các file được chuyển đổi sang csv khi đã bắt gói bằng pyshark và file log.txt ghi các hoạt động đã detect đưa khi chạy chương trình giám sát.
  • Ngoài ra còn sinh ra 2 file temp mà chương trình dùng để đọc và phân tích chuyển đổi, hai file này sẽ thay đổi thường xuyên vì thế các gói chuyển đổi sẽ lưu ở folder packet.
  • Còn file sample-detect.csv như đã nó ở phần trên là nơi lưu trữ các signature mà ta phân tích để phục vụ cho chương trình phát hiện ra mối đe dọa theo phương pháp Static Analysis mà các công cụ Antivirus thường dùng.

Hình 31: Folder của chương trình giám sát CVE-2017-8464

Hình 32: Folder packet với các file ghi lại những gói tin sau mỗi lần chuyển đổi khi bắt gói

  • Sau đó kiểm tra file log.txt xem lại hoạt động bừa rồi có phát hiện gì không. Những phát hiện tấn công dựa trên CVE-2017-8464 nó cũng đã ghi nhận lại trong log với thời gian cụ thể và IP kèm theo như thông báo khi chạy chương trình.

Hình 33: Toàn bộ cảnh báo được lưu vào log

KẾT LUẬN

Qua quá trình khai thác và xậy dựng chương trình phát hiện lỗ hổng CVE-2017-8464 giúp sinh viên hiểu được cách khai thác một lỗ hổng, từ đó phân tích ra được signature cũng như các hành vi hoạt động của mã độc trên lỗ hổng. Với việc phân tích hành vi và signature đó sẽ giúp sinh viên có khả năng tự viết chương trình để tự động thu thập, phân tích và xử lý thông tin giám sát an ninh mạng để đưa ra cảnh báo phát hiện mã độc.

About

Exploit vulnerabilities and vulnerability prevention implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages